#案例：演示列表数据类型的常用方法！

#列表数据类型有哪些函数？
# print(dir([10,20]))


# 函数原型：void obj.clear();
# 函数功能：清空列表！
a=[10,"abcd","dasd"]
a.clear()
print(a)#a=[]

# 函数原型：void obj.append(Object value);
# 函数功能：把新元素value追加到列表obj中！注意会改变列表obj！
# 形参value：要插入列表中的某元素！
a=[10,20,30,10,50,50]
a.append("hello")
print(a)

# 函数原型：void obj.insert(int index,Object value);
# 函数功能：在列表obj的下标index处插入元素value！注意会改变列表obj的值！
a=[10,20,30,10,50,50]
a.insert(1,"hello")
print(a)


# 函数原型：int obj.count(Object value);
# 函数功能：统计元素value在列表obj中出现的次数
a=[10,20,10,30,10,40]
ret=a.count(10)
print(ret)


# 函数原型：void obj.extend(Object sequence);
# 函数功能：把序列sequence(字符串、列表或元组)追加到列表obj中！注意会改变列表obj的值！
# 形参sequence：一个序列(字符串、一个列表或元组)！
a=[10,20,30]
# a.extend("abcd")

b=["abc","def","helo"]
a.extend(b)
print(a)

# 函数原型：int obj.index(Object value,[int start_index,int end_index]);
# 函数功能：返回元素value在列表obj中首次出现的下标！如果没有找到，会抛异常！
a=[20,"abc",210,"abc",1200,"abc",45,"abc"]
# ret=a.index("abc")
ret=a.index("abc",2,-1)
print(ret)


# 函数原型：Object obj.pop([int index=-1]);
# 函数功能：从列表obj中弹出/删除/移除指定下标index处的某元素！如果没有指定index参数，那么就默认移除最后一个元素！即根据下标来删除元素！
# 返回值：被移除的那个元素！
a=[10,20,30,10,50,50]
ret=a.pop(2)
print(ret)
print(a)

# 函数原型：void obj.remove(Object value);
# 函数功能：用于移除列表obj中元素value的第一个匹配项。即删除第一个value元素！
# 	注意会改变列表obj的值！即根据元素的值来删除元素！
# 形参value：要移除的元素！
a=[10,20,30,"abc",'10',10]
a.remove(10)
print(a)


# 函数原型：void obj.reverse();
# 函数功能：反转列表obj。注意会改变列表obj的值！
a=["abc","def","10",10,20,30]
a=a[::-1]
# a.reverse()
print(a)


# 函数原型：void obj.sort(cmp=None, key=None, reverse=False);
# 函数功能：对列表obj按指定的规则来进行排序！注意会改变列表obj的值！
#
# 形参cmp ： 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
# 形参key ： 主要是用来进行比较的元素，只有一个参数，具体的函数的参数就是取自于可迭代对象中，指定可迭代对象中的一个元素来进行排序。
# 形参reverse： 排序规则，reverse = True 降序， reverse = False 升序（默认）。
a=[10,20,-50,500,0,100]
# a.sort()#升序
a.sort(reverse=True) #降序
print(a)